﻿
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using SERIX.Util;
using Biblioteca.Utils;
using SERIX.Classes;

namespace SERIX
{
    /*
     * Autor      : IT-Developer1
     * Data       : 02/04/2010 11:03:48
     * Descricao  : 
     * Alteracoes : 
     * 
     */
    public partial class TecnicosManut : Seguranca
    {
        string _operacao;
        string _idt;

        string _idtOrgao;
        string _tpoCargo;
        string _idtEsloc;
        string _idtFuncao;

        protected void Page_Load(object sender, EventArgs e)
        {
            base.OnLoad(e);
            string login = UsuAut.Login;
            
            LovUsuarios1.Selecao += new SERIX.Controles.lovGenerica.SelecaoDelegate(lovSelecao);
            LovUsuarios1.ConfigurarLov("Serix", "SEG_USUARIOS", "COD_USU", "NOME", "NOME", "Pesquisa de Usuários", "Nome");
            

            _operacao = Request["OP"];
            if (!String.IsNullOrEmpty(Request["idt"]))
            {
                _idt = Server.UrlDecode(Criptografia.Descriptografar(Request["idt"]));
            }
            if (!Page.IsPostBack)
            {
                BiblioSERIX.PreencherDdl(ref ddlOrgao,COrgaos.ObterTodos(),"NOM_ORGAO","IDT_ORGAO");
                BiblioSERIX.PreencherDdl(ref ddlTipoCargo, CTiposCargos.ObterTodos(), "DSC_TPO_CARGO", "IDT_TPO_CARGO");
                BiblioSERIX.PreencherDdl(ref ddlFuncao, CFuncaoTec.ObterTodos(UsuAut.Login), "DSC_FUNCAO_TECNICO", "IDT_FUNCAO_TECNICO");
                BiblioSERIX.PreencherDdl(ref ddlEscritorio, CEscritoriosLocais.ObterTodos(UsuAut.Login), "DSC_ESLOC", "IDT_ESLOC");
               
                switch (_operacao)
                {
                    case "R":
                        {
                            lblTitulo.Text = "Cadastro de Técnicos";
                            Cancelar_Button.Visible = false;
                            CTecnicos dao = CTecnicos.PesquisaporCodigo(_idt, login);
                            CarregaDados(dao);
                            DesabilitaControles();
                            lbMunAloc.DataSource = dao.ObterVinc();
                            lbMunAloc.DataBind();
                            break;
                        }
                    case "U":
                        {
                            lblTitulo.Text = "Cadastro de Técnicos";
                            CTecnicos dao = CTecnicos.PesquisaporCodigo(_idt, login);
                            CarregaDados(dao);
                            break;

                        }
                    case "I":
                        {
                            lblTitulo.Text = "Cadastro de Técnicos";
                            TabPanel2.Visible = false;
                            break;
                        }
                    case "D":
                        {
                            lblTitulo.Text = "Exclusão do Técnico";
                            CTecnicos dao = CTecnicos.PesquisaporCodigo(_idt, login);
                            CarregaDados(dao);
                            DesabilitaControles();
                            break;
                        }
                    default: break;
                }
            }
        }

        private void lovSelecao(string chave, string descricao)
        {
            txtCodUsuario.Text = descricao;
            txtCodUsuario.Attributes.Add("chave", chave);
        }        
        private void CarregaDados(CTecnicos dao)
        {
            txtMatricula.Text = dao.Mat_tec;
            txtNome.Text = dao.Nom_tec;            
            txtEmail.Text = dao.Email;

            txtCodUsuario.Text = dao.Login;
            txtCodUsuario.Attributes.Add("chave", dao.Cod_usu);

            _idtOrgao = dao.Idt_orgao;
            _tpoCargo = dao.Idt_tpo_cargo;
            _idtEsloc = dao.idt_esloc;
            _idtFuncao = dao.Funcao;

            txtEndereco.Text = dao.Endereco;
            txtComplemento.Text = dao.Complemento;
            txtBairro.Text = dao.Bairro;
            txtCep.Text = dao.Cep;
            txtCidade.Text = dao.Cidade;
            ddlEstados.Text = dao.Uf;
            txtteleFone1.Text = dao.telefone1;
            txtteleFone2.Text = dao.telefone2;
            txtEmail0.Text = dao.Email0;
            tbcrea.Text = dao.Crea;

            AtualizaListBox(dao);
            
        }
        protected void AtualizaListBox(CTecnicos dao)
        {
            BiblioSERIX.PreencherLb(ref lbMunAloc, dao.ObterVinc(), "NOME_MUN", "IDT_MUN");
            BiblioSERIX.PreencherLb(ref lbMun, dao.ObterSemVinc(), "NOM_MUN", "IDT_MUN");
        }
        protected void DesabilitaControles()
        {
            BiblioSERIX.DesabilitaControle(txtMatricula);
            BiblioSERIX.DesabilitaControle(txtNome);            
            BiblioSERIX.DesabilitaControle(txtCodUsuario);
            BiblioSERIX.DesabilitaControle(txtEmail);
            BiblioSERIX.DesabilitaControle(txtEmail0);
            BiblioSERIX.DesabilitaControle(ddlOrgao);
            BiblioSERIX.DesabilitaControle(ddlTipoCargo);
            BiblioSERIX.DesabilitaControle(txtEndereco);
            BiblioSERIX.DesabilitaControle(txtComplemento);
            BiblioSERIX.DesabilitaControle(txtBairro);
            BiblioSERIX.DesabilitaControle(txtCep);
            BiblioSERIX.DesabilitaControle(txtCidade);
            BiblioSERIX.DesabilitaControle(ddlEstados);
            BiblioSERIX.DesabilitaControle(txtteleFone1); 
            BiblioSERIX.DesabilitaControle(txtteleFone2);
            BiblioSERIX.DesabilitaControle(ddlFuncao);
            BiblioSERIX.DesabilitaControle(ddlEscritorio);
            BiblioSERIX.DesabilitaControle(tbcrea);
        }

        protected void Ok_Button_Click(object sender, EventArgs e)
        {
            try
            {
                string login = UsuAut.Login;
                CTecnicos dao = SetDados(login);
                switch (_operacao)
                {
                    case "I":
                        {
                            dao.Inserir(login);
                            dao.VincEsloc();
                            break;
                        }
                    case "U":
                        {
                            dao.Alterar(login);
                            break;
                        }
                    case "D":
                        {
                            dao.Excluir(login);
                            break;
                        }
                    default: break;
                }
                Response.Redirect("Tecnicos.aspx");
            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        private CTecnicos SetDados(string login)
        {
            if (String.IsNullOrEmpty(_idt) && _operacao[0].Equals('I'))
            {
                _idt = CTecnicos.ObterNovoIdt(login).ToString();
            }
            string codUsu = txtCodUsuario.Attributes["chave"].ToString();
            
            CTecnicos dao = new CTecnicos(_idt, txtMatricula.Text, ddlTipoCargo.SelectedValue, 
                ddlOrgao.SelectedValue, txtNome.Text, txtEndereco.Text, 
                txtBairro.Text, txtCidade.Text, codUsu, ddlEstados.SelectedValue, 
                txtCep.Text, txtComplemento.Text,txtEmail.Text,txtEmail0.Text,txtteleFone1.Text,txtteleFone2.Text,ddlEscritorio.SelectedValue,ddlFuncao.SelectedValue,tbcrea.Text);
            return dao;
        }

        protected void Cancelar_Button_Click(object sender, EventArgs e)
        {
            Response.Redirect("Tecnicos.aspx");
        }

        protected void ddlOrgao_PreRender(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddlOrgao.Items.Insert(0, new ListItem());
                ddlOrgao.SelectedValue = _idtOrgao;
            }
        }

        protected void ddlTipoCargo_PreRender(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddlTipoCargo.Items.Insert(0, new ListItem());
                ddlTipoCargo.SelectedValue = _tpoCargo;
            }
        }

        protected void ddlEscritorio_PreRender(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddlEscritorio.Items.Insert(0, new ListItem());
                ddlEscritorio.SelectedValue = _idtEsloc;
            }
        }

        protected void ddlFuncao_PreRender(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddlFuncao.Items.Insert(0, new ListItem());
                ddlFuncao.SelectedValue = _idtFuncao;
            }
        }

        protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                
            }
        }

        protected void BtnIncluir_Click(object sender, EventArgs e)
        {
            CTecnicos dao = SetDados(UsuAut.Login);
            dao.AlocarUnico(lbMun.SelectedValue);
            AtualizaListBox(dao);
        }

        protected void BtnIncluirTodos_Click(object sender, EventArgs e)
        {
            CTecnicos dao = SetDados(UsuAut.Login);
            for (int i = 0; i < lbMun.Items.Count; i++)
            {
                dao.AlocarUnico(lbMun.Items[i].Value);
            }
            AtualizaListBox(dao);
        }

        protected void BtnRemover_Click(object sender, EventArgs e)
        {
            CTecnicos dao = SetDados(UsuAut.Login);
            dao.DesalocarUnico(lbMunAloc.SelectedValue);
            AtualizaListBox(dao);
        }

        protected void BtnRemoverTodos_Click(object sender, EventArgs e)
        {
            CTecnicos dao = SetDados(UsuAut.Login);
            for (int i = 0; i < lbMunAloc.Items.Count; i++)
            {
                dao.DesalocarUnico(lbMunAloc.Items[i].Value);
            }
            AtualizaListBox(dao);
        }

        protected void lbMun_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
